<!DOCTYPE HTML>
<meta charset=UTF-8>
<link rel="match" href="raster-scale-perspective-001-ref.html">
<style>

div.test {
  will-change: transform;
  transform-origin: top left;
  background-repeat: no-repeat;
  background-position: 0px 0px;
  background-size: 100% 100%;
  position: absolute;
}

div.cover {
  position: absolute;
  width: 58px;
  height: 58px;
  border: 2px solid blue;
}

</style>

<body>

<script>

const TESTS = [
  { scale: 1.0, transform: "scale(1)" },
  { scale: 1.0, transform: "perspective(0)" },
  { scale: 1.0, transform: "perspective(50px)" },
  { scale: 2.0, transform: "perspective(40px) translateZ(20px)" },
  /* the test gradient seems to behave oddly if raster scale is less than 1 */
  { scale: 2.0, transform: "scale(4) perspective(30px) translateZ(-30px)" },
  { scale: 1.5, transform: "scale(1.5)" },
  { scale: 1.5, transform: "scale(1.5) perspective(0)" },
  { scale: 1.5, transform: "scale(1.5) perspective(50px)" },
  { scale: 3.0, transform: "scale(1.5) perspective(40px) translateZ(20px)" },
  { scale: 1.5, transform: "scale(3) perspective(50px) translateZ(-50px)" },
];

const tests_per_row = 5;

for (const index in TESTS) {
  const test = TESTS[index];
  const y = Math.floor(index / tests_per_row);
  const x = index - (y * tests_per_row);

  let div = document.createElement("div");
  div.className = "test";
  div.style.left = `${x * 100}px`;
  div.style.top = `${y * 100}px`;
  const size = `${60 / test.scale}px`;
  div.style.width = size;
  div.style.height = size;

  /* This should work with "1/" rather than "2/", but doesn't */
  const stop_length = 2/(Math.sqrt(2) * test.scale);
  div.style.backgroundImage = `repeating-linear-gradient(135deg, white 0px, white ${stop_length}px, black ${stop_length}px, black ${2 * stop_length}px)`;

  div.style.transform = test.transform;

  document.body.appendChild(div);

  div = document.createElement("div");
  div.className = "cover";
  div.style.left = `${x * 100 - 1}px`;
  div.style.top = `${y * 100 - 1}px`;
  document.body.appendChild(div);
}

</script>
